home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / Programming / JForth / JTools / JARexx / tests / VarTest.f < prev   
Encoding:
FORTH Source  |  1992-01-25  |  2.1 KB  |  98 lines

  1. \ A test program to demonstrate the direct variable interface to ARexx.
  2. \  Opens a public port called "VarTest" and then waits for REXX messages.
  3. \  The port stays open until a "CLOSE" command is received.
  4. \  Usage:  vartest            ( from Forth window )
  5. \          rx testrvi.rexx    ( from shell window )
  6. \  Then send commands from within ARexx by "address 'VarTest' command"
  7. \ This version translated to JFORTH by Martin C Kees
  8.  
  9. \ 00001 PLB 1/24/92 Added INCLUDE? VALUE
  10.  
  11. getmodule includes
  12. getmodule arexxmod
  13. include? createport() ju:exec_support
  14. include? rexxsyslib?  jrx:ArexxCalls.f
  15. include? CheckRexxMsg jrx:RexxVars.f
  16. include? value        ju:value
  17.  
  18. anew TASK_VARTEST.F
  19.  
  20. 0 value VARTESTPORT
  21. 0 value RMSG
  22.  
  23. : VARPORT.INIT ( -- ok? )
  24.     0" VarTest" 0 createport()
  25.     dup -> vartestport
  26. ;  
  27.  
  28. : VARPORT.TERM ( -- )
  29.     vartestport dup
  30.     IF
  31.         deleteport()
  32.         0 -> vartestport
  33.     THEN    
  34. ;                  
  35.  
  36. : VARTEST.SHOWVAR ( 0name -- , show value of variable )
  37.     >r
  38.     rmsg r@ GetRexxVar ?dup
  39.     ." Vartest: value of " r> 0count type ."  is: "
  40.     IF \ error!
  41.         ." No Value" cr
  42.         ." VarTest: error from get " .
  43.         drop
  44.     ELSE
  45.         0count dup  
  46.         IF type 
  47.         ELSE ddrop ." NULL STRING"
  48.         THEN
  49.     THEN cr
  50. ;
  51.  
  52. : VARTEST  ( -- , test variable interface )
  53. \ initialize
  54.     rexxsyslib?
  55.     varport.init
  56.     IF
  57.         ." Waiting for commands from TestRVI.rexx" cr
  58.         BEGIN
  59. \ get command message from ARexx
  60.             vartestport waitport() drop
  61.             vartestport getMsg() -> rmsg
  62.             cr ." VarTest: received command "
  63.             rmsg .. rm_args @ >rel 0count type cr
  64.             rmsg CheckRexxMsg
  65.             IF
  66.                 ." VarTest: valid REXX context" cr
  67. \
  68. \ get variables and print them
  69.                 0" A.1" vartest.showvar
  70.                 0" A.2" vartest.showvar
  71. \
  72. \ change value of STATUS variable
  73.                 rmsg 0" STATUS" " A-OK" count
  74.                 SetRexxVar ?dup
  75.                 IF ." VarTest: error from set " . cr
  76.                 THEN
  77.             THEN
  78. \
  79. \ did we get CLOSE command?
  80.             0" CLOSE" 0count rmsg .. rm_args @ >rel text=?
  81. \
  82. \ reply to message
  83.             0 rmsg ..! rm_result1
  84.             0 rmsg ..! rm_result2
  85.             rmsg ReplyMsg()
  86.         UNTIL
  87. \ cleanup
  88.         varport.term
  89.     THEN
  90.     -rexxsyslib
  91. ;     
  92.  
  93. cr
  94. ." Enter in JForth:  VARTEST" cr
  95. ." Enter in shell:   RX JRX:TESTS/TestRVI" cr
  96.  
  97.